Append conversation messages to a session’s working memory. One call carries 1–500 messages.
The write is asynchronous by default (async_mode true): the gateway validates and enqueues it, answering 202 with status “queued”. Pass async_mode: false to forward synchronously and receive the engine’s 200 result instead.
Distillation into long-term memory is always asynchronous — it runs on a session boundary, or when you call /api/v2/memory/flush.
POST
/
api
/
v2
/
memory
/
add
Add messages [OSS + Cloud]
curl --request POST \ --url https://api.evermind.ai/api/v2/memory/add \ --header 'Authorization: Bearer <token>' \ --header 'Content-Type: application/json' \ --data '{ "session_id": "session-1", "messages": [ { "sender_id": "user-1", "role": "user", "timestamp": 1700000000000, "content": "I love hiking in the mountains" } ]}'
The conversation these messages belong to (1–128 characters). It is the unit extraction works on: /api/v2/memory/flush takes this id, and a session boundary is what triggers extraction on its own.
Business-semantic scope for this write, defaulting to "default". Reads must use the same app_id / project_id pair to see what was written under it. Note this is a partition, not the security boundary — that is the tenant resolved from your API key.
Selects the write path. true (default): validated and enqueued asynchronously → HTTP 202 with status "queued". false: forwarded synchronously to the engine, returning its 200 result and surfacing write errors directly. Extraction is always asynchronous (flush-triggered).
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"EverOS","colors":{"primary":"#2DABC2","light":"#FAF9F5","dark":"#FFC53D"},"logo":{"light":"https://mintcdn.com/evermind/r7FUvGqFENzWPpQK/logo/dark.png?fit=max\u0026auto=format\u0026n=r7FUvGqFENzWPpQK\u0026q=85\u0026s=3c77717d85a2e6597b61a703fa9f18dc","dark":"https://mintcdn.com/evermind/r7FUvGqFENzWPpQK/logo/light.png?fit=max\u0026auto=format\u0026n=r7FUvGqFENzWPpQK\u0026q=85\u0026s=8edcb7078f3569fbce98154987e4c825","href":"//evermind.ai"},"favicon":"https://mintcdn.com/evermind/KH16NOZG47OFzMRe/favicon.svg?fit=max\u0026auto=format\u0026n=KH16NOZG47OFzMRe\u0026q=85\u0026s=5d3fe0e14c145627d3adc793919fc891","navbar":{"links":[{"href":"mailto:contact@evermind.ai","label":"Support"}],"primary":{"type":"button","label":"Dashboard","href":"https://everos.evermind.ai"}},"footer":{"socials":{"x":"https://x.com/EverMindAI","github":"https://github.com/EverMind-AI/EverOS","linkedin":"https://www.linkedin.com/company/ai-evermind"}},"integrations":{"gtm":{"tagId":"GTM-WQG5VGJQ"},"posthog":{"apiKey":"phc_xzrNRpDb4XkGwtE0wb24VNJT89c47fsuEA4FibnmdnE","apiHost":"https://phc.evermind.ai"}},"banner":{"content":"EverOS API v1 retires on November 2, 2026. [See what you need to do](/api-reference/v1-sunset)","dismissible":false},"contextual":{"options":["copy","view","chatgpt","claude","perplexity"],"display":"header"},"styling":{"latex":true},"navigation":{"global":{},"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"evermind","hasAudioNarration":false,"actualSubdomain":"evermind","customDomains":["docs.evermind.ai"],"gitSource":{"type":"github","owner":"evermind-ai","repo":"everos-docs","deployBranch":"main","contentDirectory":"","isPrivate":true,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6adec8aacdbe2c2cc473aa1f","collectionId":"22f13430-6cac-44bc-889d-b59c91ab5b8d","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6adec8aacdbe2c2cc473aa1f"},"feedback":{"agentFeedback":true,"thumbs":true},"entitlements":{},"buildId":"6adec8aacdbe2c2cc473aa1f","clientVersion":"0.0.3971","searchFilterCounts":[{"language":"default","tag":"API Reference","count":39},{"language":"default","tag":"API Reference (Cloud v1 · legacy)","count":21},{"language":"default","tag":"Knowledge Bases","count":19},{"language":"default","tag":"API Reference (OSS v1 · legacy)","count":17},{"language":"default","tag":"Memory","count":17},{"language":"default","tag":"EverOS Cloud","count":14},{"language":"default","tag":"Core Concepts","count":10},{"language":"default","tag":"Open Source","count":10},{"language":"default","tag":"Knowledge Wiki","count":9},{"language":"default","tag":"Memories","count":9}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-v7-file-tree","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"pause-universal-search-reconcile","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"per-site-search-delta","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-private-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-nav-generations","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-agent-model-picker","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"isAtlas":false,"googleFontsInlined":false},"customCss":[{"filePath":"style.css","content":"html:not(.dark),html:not(.dark) #body-content,html:not(.dark) #content-area,html:not(.dark) #navbar,html:not(.dark) #sidebar,html:not(.dark) #sidebar-content,html:not(.dark) #table-of-contents,html:not(.dark) aside,html:not(.dark) body,html:not(.dark) header,html:not(.dark) main,html:not(.dark) nav{background-color:#faf9f5}:not(.dark) .from-background-light{--tw-gradient-from:#FAF9F5!important}.dark .from-background-light{--tw-gradient-from:#0e0e10!important}div.mt-2.text-lg.prose{margin-top:1.5rem}"}],"page":{"pagePath":"api-reference/memory/add-messages-[oss-+-cloud]","slug":"/api-reference/memory/add-messages-[oss-+-cloud]","pageMetadata":{"title":"Add messages [OSS + Cloud]","description":"Append conversation messages to a session's working memory. One call carries 1–500 messages.\n\nThe write is asynchronous by default (`async_mode` true): the gateway validates and enqueues it, answering 202 with status \"queued\". Pass `async_mode: false` to forward synchronously and receive the engine's 200 result instead.\n\nDistillation into long-term memory is always asynchronous — it runs on a session boundary, or when you call /api/v2/memory/flush.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/memory/add","href":"/api-reference/memory/add-messages-[oss-+-cloud]","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsx(_components.p, {\n children: \"Append conversation messages to a session’s working memory. One call carries 1–500 messages.\"\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"The write is asynchronous by default (\", _jsx(_components.code, {\n children: \"async_mode\"\n }), \" true): the gateway validates and enqueues it, answering 202 with status “queued”. Pass \", _jsx(_components.code, {\n children: \"async_mode: false\"\n }), \" to forward synchronously and receive the engine’s 200 result instead.\"]\n }), \"\\n\", _jsx(_components.p, {\n children: \"Distillation into long-term memory is always asynchronous — it runs on a session boundary, or when you call /api/v2/memory/flush.\"\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Add messages [OSS + Cloud]","description":"Append conversation messages to a session's working memory. One call carries 1–500 messages.\n\nThe write is asynchronous by default (`async_mode` true): the gateway validates and enqueues it, answering 202 with status \"queued\". Pass `async_mode: false` to forward synchronously and receive the engine's 200 result instead.\n\nDistillation into long-term memory is always asynchronous — it runs on a session boundary, or when you call /api/v2/memory/flush.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/memory/add","href":"/api-reference/memory/add-messages-[oss-+-cloud]","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"tags":["Memory"],"summary":"Add messages [OSS + Cloud]","operationId":"addMemory","requestBody":"0a92a503-e391-48a2-b40c-5e1bcd30c2cb","responses":{"200":"3ee6603f-5db3-4a43-9b35-c9e625c824a9","202":"2e2c648c-7128-4856-a224-5b6a857715a0","401":"b9dc4186-5b16-4a85-880e-168abdf273a7","403":"3dbce8a6-d9f5-4ed3-9c68-25504c56f557","422":"47b9e9a5-bd9b-4214-b358-b8e947e0b000","429":"13a96f76-9322-4229-8b0e-5b7a4824514b","503":"2cf6c025-335f-4788-b7b1-df823f7bd699"},"description":"Append conversation messages to a session's working memory. One call carries 1–500 messages.\n\nThe write is asynchronous by default (`async_mode` true): the gateway validates and enqueues it, answering 202 with status \"queued\". Pass `async_mode: false` to forward synchronously and receive the engine's 200 result instead.\n\nDistillation into long-term memory is always asynchronous — it runs on a session boundary, or when you call /api/v2/memory/flush.","method":"post","type":"path","servers":["6755bf3f-8ce6-4610-8f69-e9440a578770"],"security":["903c48f7-e2df-45e0-bf1e-f020d6c26b61"],"path":"/api/v2/memory/add","baseUrlOptions":["https://api.evermind.ai"],"title":"Add messages [OSS + Cloud]","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated"},"dependencies":{"parameters":{},"requestBody":{"content":{"application/json":{"schema":{"properties":{"session_id":{"type":"string","maxLength":256,"minLength":1,"title":"Session Id","description":"The conversation these messages belong to (1–128 characters). It is the unit extraction works on: /api/v2/memory/flush takes this id, and a session boundary is what triggers extraction on its own.","isRequired":true,"uniqueKey":"session_id","typeLabel":"string"},"messages":{"items":{"properties":{"sender_id":{"type":"string","title":"Sender Id","description":"Who produced this message — the user id for a user turn, the agent id for an assistant turn. This is the identifier /api/v2/memory/get and /api/v2/memory/search later scope by (`user_id` / `agent_id`).","isRequired":true,"uniqueKey":"messages.items.[INDEX].sender_id","typeLabel":"string"},"role":{"type":"string","enum":["user","assistant","tool"],"title":"Role","description":"Turn type: \"user\", \"assistant\", or \"tool\" for a tool result. An agent trajectory uses the OpenAI shape — an \"assistant\" message carrying `tool_calls`, followed by a \"tool\" message carrying `tool_call_id`.","isRequired":true,"uniqueKey":"messages.items.[INDEX].role","typeLabel":"enum\u003cstring>"},"timestamp":{"type":"integer","title":"Timestamp","description":"When the message was produced, as a UNIX timestamp in MILLISECONDS. A seconds-scale value is rejected with 422 rather than silently rescaled, because a window mixing the two would mis-order and mis-split.","minimum":1000000000000,"isRequired":true,"uniqueKey":"messages.items.[INDEX].timestamp","typeLabel":"integer"},"content":{"oneOf":[{"type":"string","title":"Content","description":"The message body: a plain string (shorthand for a single text item), or a list of content items for multimodal input.","isRequired":true,"uniqueKey":"messages.items.[INDEX].content.oneOf.0","typeLabel":"string"},{"type":"array","items":{"properties":{"type":{"type":"string","enum":["text","audio","image","doc","pdf","html","email"],"title":"Type","description":"What this item is: \"text\", \"image\", \"audio\", \"doc\", \"pdf\", \"html\" or \"email\". It selects how the content is parsed, so it must match the payload.","isRequired":true,"uniqueKey":"messages.items.[INDEX].content.oneOf.1.items.[INDEX].type","typeLabel":"enum\u003cstring>"},"text":{"oneOf":[{"type":"string","title":"Text","description":"Inline text, used when `type` is \"text\".","uniqueKey":"messages.items.[INDEX].content.oneOf.1.items.[INDEX].text.oneOf.0","typeLabel":"string"},{"type":"null","title":"Text","description":"Inline text, used when `type` is \"text\".","uniqueKey":"messages.items.[INDEX].content.oneOf.1.items.[INDEX].text.oneOf.1","typeLabel":"null"}],"uniqueKey":"messages.items.[INDEX].content.oneOf.1.items.[INDEX].text","typeLabel":"string | null"},"source":{"oneOf":[{"type":"string","title":"Source","description":"Where the item came from — an origin label carried through to the memory.","uniqueKey":"messages.items.[INDEX].content.oneOf.1.items.[INDEX].source.oneOf.0","typeLabel":"string"},{"type":"null","title":"Source","description":"Where the item came from — an origin label carried through to the memory.","uniqueKey":"messages.items.[INDEX].content.oneOf.1.items.[INDEX].source.oneOf.1","typeLabel":"null"}],"uniqueKey":"messages.items.[INDEX].content.oneOf.1.items.[INDEX].source","typeLabel":"string | null"},"base64":{"oneOf":[{"type":"string","title":"Base64","description":"The item's bytes inline, base64-encoded. NOTE: a non-text item that carries only `base64` is skipped by the parse step — the parser reads bytes from object storage — so use `uri` for anything that must actually be understood.","uniqueKey":"messages.items.[INDEX].content.oneOf.1.items.[INDEX].base64.oneOf.0","typeLabel":"string"},{"type":"null","title":"Base64","description":"The item's bytes inline, base64-encoded. NOTE: a non-text item that carries only `base64` is skipped by the parse step — the parser reads bytes from object storage — so use `uri` for anything that must actually be understood.","uniqueKey":"messages.items.[INDEX].content.oneOf.1.items.[INDEX].base64.oneOf.1","typeLabel":"null"}],"uniqueKey":"messages.items.[INDEX].content.oneOf.1.items.[INDEX].base64","typeLabel":"string | null"},"uri":{"oneOf":[{"type":"string","title":"Uri","description":"Pointer to already-uploaded bytes: the object key returned by POST /api/v2/object/sign. This is the only form of a non-text item that gets parsed.","uniqueKey":"messages.items.[INDEX].content.oneOf.1.items.[INDEX].uri.oneOf.0","typeLabel":"string"},{"type":"null","title":"Uri","description":"Pointer to already-uploaded bytes: the object key returned by POST /api/v2/object/sign. This is the only form of a non-text item that gets parsed.","uniqueKey":"messages.items.[INDEX].content.oneOf.1.items.[INDEX].uri.oneOf.1","typeLabel":"null"}],"uniqueKey":"messages.items.[INDEX].content.oneOf.1.items.[INDEX].uri","typeLabel":"string | null"},"ext":{"oneOf":[{"type":"string","title":"Ext","description":"File extension of the referenced content, e.g. \"pdf\" — used when the uri carries none.","uniqueKey":"messages.items.[INDEX].content.oneOf.1.items.[INDEX].ext.oneOf.0","typeLabel":"string"},{"type":"null","title":"Ext","description":"File extension of the referenced content, e.g. \"pdf\" — used when the uri carries none.","uniqueKey":"messages.items.[INDEX].content.oneOf.1.items.[INDEX].ext.oneOf.1","typeLabel":"null"}],"uniqueKey":"messages.items.[INDEX].content.oneOf.1.items.[INDEX].ext","typeLabel":"string | null"},"name":{"oneOf":[{"type":"string","title":"Name","description":"Original file name, kept for display and passed to the parser.","uniqueKey":"messages.items.[INDEX].content.oneOf.1.items.[INDEX].name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Name","description":"Original file name, kept for display and passed to the parser.","uniqueKey":"messages.items.[INDEX].content.oneOf.1.items.[INDEX].name.oneOf.1","typeLabel":"null"}],"uniqueKey":"messages.items.[INDEX].content.oneOf.1.items.[INDEX].name","typeLabel":"string | null"},"source_info":{"oneOf":[{"type":"object","title":"Source Info","description":"Free-form provenance metadata stored alongside the item; a `size` here is passed to the parser.","additionalProperties":true,"uniqueKey":"messages.items.[INDEX].content.oneOf.1.items.[INDEX].source_info.oneOf.0","typeLabel":"Source Info · object"},{"type":"null","title":"Source Info","description":"Free-form provenance metadata stored alongside the item; a `size` here is passed to the parser.","uniqueKey":"messages.items.[INDEX].content.oneOf.1.items.[INDEX].source_info.oneOf.1","typeLabel":"null"}],"uniqueKey":"messages.items.[INDEX].content.oneOf.1.items.[INDEX].source_info","typeLabel":"Source Info · object | null"},"extras":{"oneOf":[{"type":"object","title":"Extras","description":"Free-form extra fields, passed through untouched.","additionalProperties":true,"uniqueKey":"messages.items.[INDEX].content.oneOf.1.items.[INDEX].extras.oneOf.0","typeLabel":"Extras · object"},{"type":"null","title":"Extras","description":"Free-form extra fields, passed through untouched.","uniqueKey":"messages.items.[INDEX].content.oneOf.1.items.[INDEX].extras.oneOf.1","typeLabel":"null"}],"uniqueKey":"messages.items.[INDEX].content.oneOf.1.items.[INDEX].extras","typeLabel":"Extras · object | null"}},"type":"object","required":["type"],"title":"ContentItem","description":"A single content element (appendix A). Current phase: only ``type=\"text\"``.","uniqueKey":"messages.items.[INDEX].content.oneOf.1.items.[INDEX]","typeLabel":"ContentItem · object"},"title":"Content","description":"The message body: a plain string (shorthand for a single text item), or a list of content items for multimodal input.","isRequired":true,"uniqueKey":"messages.items.[INDEX].content.oneOf.1","typeLabel":"ContentItem · object[]"}],"isRequired":true,"uniqueKey":"messages.items.[INDEX].content","typeLabel":"string | ContentItem · object[]"},"sender_name":{"oneOf":[{"type":"string","title":"Sender Name","description":"Optional display name for the sender; does not affect scoping.","uniqueKey":"messages.items.[INDEX].sender_name.oneOf.0","typeLabel":"string"},{"type":"null","title":"Sender Name","description":"Optional display name for the sender; does not affect scoping.","uniqueKey":"messages.items.[INDEX].sender_name.oneOf.1","typeLabel":"null"}],"uniqueKey":"messages.items.[INDEX].sender_name","typeLabel":"string | null"},"tool_calls":{"oneOf":[{"type":"array","items":{"properties":{"id":{"type":"string","title":"Id","description":"Tool-call id; the matching \"tool\" message echoes it as `tool_call_id`.","isRequired":true,"uniqueKey":"messages.items.[INDEX].tool_calls.oneOf.0.items.[INDEX].id","typeLabel":"string"},"function":{"properties":{"name":{"type":"string","title":"Name","description":"Name of the function the assistant called.","isRequired":true,"uniqueKey":"messages.items.[INDEX].tool_calls.oneOf.0.items.[INDEX].function.name","typeLabel":"string"},"arguments":{"type":"string","title":"Arguments","description":"The call's arguments as a JSON-encoded string (OpenAI shape), not an object.","isRequired":true,"uniqueKey":"messages.items.[INDEX].tool_calls.oneOf.0.items.[INDEX].function.arguments","typeLabel":"string"}},"type":"object","required":["name","arguments"],"title":"ToolCallFunction","description":"The function invoked, with its arguments.","isRequired":true,"uniqueKey":"messages.items.[INDEX].tool_calls.oneOf.0.items.[INDEX].function","typeLabel":"ToolCallFunction · object"},"type":{"type":"string","title":"Type","default":"function","description":"Tool-call kind. Always \"function\" today.","uniqueKey":"messages.items.[INDEX].tool_calls.oneOf.0.items.[INDEX].type","typeLabel":"string"}},"type":"object","required":["id","function"],"title":"ToolCall","uniqueKey":"messages.items.[INDEX].tool_calls.oneOf.0.items.[INDEX]","typeLabel":"ToolCall · object"},"title":"Tool Calls","description":"Tool calls issued by an assistant turn, in the OpenAI tool-calling shape. Only meaningful when `role` is \"assistant\".","uniqueKey":"messages.items.[INDEX].tool_calls.oneOf.0","typeLabel":"ToolCall · object[]"},{"type":"null","title":"Tool Calls","description":"Tool calls issued by an assistant turn, in the OpenAI tool-calling shape. Only meaningful when `role` is \"assistant\".","uniqueKey":"messages.items.[INDEX].tool_calls.oneOf.1","typeLabel":"null"}],"uniqueKey":"messages.items.[INDEX].tool_calls","typeLabel":"ToolCall · object[] | null"},"tool_call_id":{"oneOf":[{"type":"string","title":"Tool Call Id","description":"The id of the assistant tool call this result answers. Required when `role` is \"tool\".","uniqueKey":"messages.items.[INDEX].tool_call_id.oneOf.0","typeLabel":"string"},{"type":"null","title":"Tool Call Id","description":"The id of the assistant tool call this result answers. Required when `role` is \"tool\".","uniqueKey":"messages.items.[INDEX].tool_call_id.oneOf.1","typeLabel":"null"}],"uniqueKey":"messages.items.[INDEX].tool_call_id","typeLabel":"string | null"}},"type":"object","required":["sender_id","role","timestamp","content"],"title":"MessageItem","description":"One message in an /add batch (spec §2). ``content`` accepts a plain string\n(shorthand for a single text ContentItem) or an explicit ContentItem list.","uniqueKey":"messages.items.[INDEX]","typeLabel":"MessageItem · object"},"type":"array","maxItems":500,"minItems":1,"title":"Messages","description":"The turns to append, in order — 1 to 500 per call. Each carries its own sender and timestamp, so one call can hold a whole exchange.","isRequired":true,"uniqueKey":"messages","typeLabel":"MessageItem · object[]"},"app_id":{"type":"string","maxLength":128,"title":"App Id","default":"default","description":"Business-semantic scope for this write, defaulting to \"default\". Reads must use the same app_id / project_id pair to see what was written under it. Note this is a partition, not the security boundary — that is the tenant resolved from your API key.","uniqueKey":"app_id","typeLabel":"string"},"project_id":{"type":"string","maxLength":128,"title":"Project Id","default":"default","description":"Second half of the business-semantic scope, defaulting to \"default\". See `app_id`.","uniqueKey":"project_id","typeLabel":"string"},"async_mode":{"type":"boolean","default":true,"title":"Async Mode","description":"Selects the write path. true (default): validated and enqueued asynchronously → HTTP 202 with status \"queued\". false: forwarded synchronously to the engine, returning its 200 result and surfacing write errors directly. Extraction is always asynchronous (flush-triggered).","uniqueKey":"async_mode","typeLabel":"boolean"}},"type":"object","required":["session_id","messages"],"title":"AddInput","example":{"session_id":"session-1","messages":[{"sender_id":"user-1","role":"user","timestamp":1700000000000,"content":"I love hiking in the mountains"}]},"uniqueKey":"","typeLabel":"AddInput · object"},"examples":{"Example":{"title":"Example","value":{"session_id":"session-1","messages":[{"sender_id":"user-1","role":"user","timestamp":1700000000000,"content":"I love hiking in the mountains"}]}}},"exampleType":"generated"}},"required":true,"exampleType":"generated"},"responses":{"3ee6603f-5db3-4a43-9b35-c9e625c824a9":{"description":"Synchronous write result (async_mode=false).","content":{"application/json":{"schema":{"properties":{"request_id":{"type":"string","title":"Request Id","description":"Request trace id (peer to data)","isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"data":{"properties":{"message_count":{"type":"integer","title":"Message Count","description":"How many messages this call accepted.","isRequired":true,"uniqueKey":"data.message_count","typeLabel":"integer"},"status":{"type":"string","enum":["accumulated","extracted","queued"],"title":"Status","description":"\"queued\" — async enqueue accepted (HTTP 202). \"accumulated\"/\"extracted\" — synchronous write outcome (HTTP 200, async_mode=false).","isRequired":true,"uniqueKey":"data.status","typeLabel":"enum\u003cstring>"}},"type":"object","required":["message_count","status"],"title":"AddData","description":"Endpoint-defined business result","isRequired":true,"uniqueKey":"data","typeLabel":"AddData · object"}},"type":"object","required":["request_id","data"],"title":"SuccessEnvelope[AddData]","uniqueKey":"","typeLabel":"SuccessEnvelope[AddData] · object"},"examples":{"Example":{"title":"Example","value":{"request_id":"\u003cstring>","data":{"message_count":123,"status":"accumulated"}}}},"exampleType":"generated"}},"exampleType":"generated"},"2e2c648c-7128-4856-a224-5b6a857715a0":{"description":"Accepted for asynchronous processing (async_mode=true, default).","content":{"application/json":{"schema":{"properties":{"request_id":{"type":"string","title":"Request Id","description":"Request trace id (peer to data)","isRequired":true,"uniqueKey":"request_id","typeLabel":"string"},"data":{"properties":{"message_count":{"type":"integer","title":"Message Count","description":"How many messages this call accepted.","isRequired":true,"uniqueKey":"data.message_count","typeLabel":"integer"},"status":{"type":"string","enum":["accumulated","extracted","queued"],"title":"Status","description":"\"queued\" — async enqueue accepted (HTTP 202). \"accumulated\"/\"extracted\" — synchronous write outcome (HTTP 200, async_mode=false).","isRequired":true,"uniqueKey":"data.status","typeLabel":"enum\u003cstring>"}},"type":"object","required":["message_count","status"],"title":"AddData","description":"Endpoint-defined business result","isRequired":true,"uniqueKey":"data","typeLabel":"AddData · object"}},"type":"object","required":["request_id","data"],"title":"SuccessEnvelope[AddData]","uniqueKey":"","typeLabel":"SuccessEnvelope[AddData] · object"},"examples":{"Example":{"title":"Example","value":{"request_id":"\u003cstring>","data":{"message_count":123,"status":"accumulated"}}}},"exampleType":"generated"}},"exampleType":"generated"},"b9dc4186-5b16-4a85-880e-168abdf273a7":{"description":"Missing or invalid bearer token.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Gateway error body. NOTE: shape is not yet uniform across auth/quota/ rate-limit paths — treat fields as best-effort. Commonly includes a `code`/`message` (flat) or an `error` object/string with a `message`.","title":"GatewayError","uniqueKey":"","typeLabel":"GatewayError · object"},"examples":{"Example":{"title":"Example","value":{}}},"exampleType":"generated"}},"exampleType":"generated"},"3dbce8a6-d9f5-4ed3-9c68-25504c56f557":{"description":"Authenticated but not permitted — either rejected by the auth service, or the account's memory API version does not match the interface version implied by the path (a v1 account calling an /api/v2 route).","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Gateway error body. NOTE: shape is not yet uniform across auth/quota/ rate-limit paths — treat fields as best-effort. Commonly includes a `code`/`message` (flat) or an `error` object/string with a `message`.","title":"GatewayError","uniqueKey":"","typeLabel":"GatewayError · object"},"examples":{"Example":{"title":"Example","value":{}}},"exampleType":"generated"}},"exampleType":"generated"},"47b9e9a5-bd9b-4214-b358-b8e947e0b000":{"description":"Validation Error","content":{"application/json":{"schema":{"properties":{"detail":{"items":{"properties":{"loc":{"items":{"oneOf":[{"type":"string","uniqueKey":"detail.items.[INDEX].loc.items.[INDEX].oneOf.0","typeLabel":"string"},{"type":"integer","uniqueKey":"detail.items.[INDEX].loc.items.[INDEX].oneOf.1","typeLabel":"integer"}],"uniqueKey":"detail.items.[INDEX].loc.items.[INDEX]","typeLabel":"string | integer"},"type":"array","title":"Location","description":"Path to the offending field, from the body root.","isRequired":true,"uniqueKey":"detail.items.[INDEX].loc","typeLabel":"(string | integer)[]"},"msg":{"type":"string","title":"Message","description":"What is wrong with it.","isRequired":true,"uniqueKey":"detail.items.[INDEX].msg","typeLabel":"string"},"type":{"type":"string","title":"Error Type","description":"Machine-readable validation-error kind.","isRequired":true,"uniqueKey":"detail.items.[INDEX].type","typeLabel":"string"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError","uniqueKey":"detail.items.[INDEX]","typeLabel":"ValidationError · object"},"type":"array","title":"Detail","description":"One entry per field that failed validation.","uniqueKey":"detail","typeLabel":"ValidationError · object[]"}},"type":"object","title":"HTTPValidationError","uniqueKey":"","typeLabel":"HTTPValidationError · object"},"examples":{"Example":{"title":"Example","value":{"detail":[{"loc":["\u003cstring>"],"msg":"\u003cstring>","type":"\u003cstring>"}]}}},"exampleType":"generated"}},"exampleType":"generated"},"13a96f76-9322-4229-8b0e-5b7a4824514b":{"description":"Rate limit or quota exceeded.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Gateway error body. NOTE: shape is not yet uniform across auth/quota/ rate-limit paths — treat fields as best-effort. Commonly includes a `code`/`message` (flat) or an `error` object/string with a `message`.","title":"GatewayError","uniqueKey":"","typeLabel":"GatewayError · object"},"examples":{"Example":{"title":"Example","value":{}}},"exampleType":"generated"}},"exampleType":"generated"},"2cf6c025-335f-4788-b7b1-df823f7bd699":{"description":"The gateway could not reach the authentication service. Transient — retry with backoff.","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"description":"Gateway error body. NOTE: shape is not yet uniform across auth/quota/ rate-limit paths — treat fields as best-effort. Commonly includes a `code`/`message` (flat) or an `error` object/string with a `message`.","title":"GatewayError","uniqueKey":"","typeLabel":"GatewayError · object"},"examples":{"Example":{"title":"Example","value":{}}},"exampleType":"generated"}},"exampleType":"generated"}},"security":{"903c48f7-e2df-45e0-bf1e-f020d6c26b61":{"BearerAuth":{"type":"http","scheme":"bearer","description":"API key issued by EverOS, sent as `Authorization: Bearer \u003capi_key>`.","scopes":[],"schemeName":"BearerAuth"}}},"servers":{"6755bf3f-8ce6-4610-8f69-e9440a578770":{"url":"https://api.evermind.ai","description":"Production"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"type":"http","scheme":"bearer","description":"API key issued by EverOS, sent as `Authorization: Bearer \u003capi_key>`.","scopes":[],"schemeName":"BearerAuth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"API key issued by EverOS, sent as `Authorization: Bearer \u003capi_key>`.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"BearerAuth","name":"Authorization"}],"title":"BearerAuth"}]},"originalFileLocation":"api-reference/openapi.json"},"subdomain":"evermind","siteName":"EverOS","title":"Add messages [OSS + Cloud] - EverOS","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-10-26T03:27:45.707Z","originalFileLocation":"api-reference/memory/add-messages-[oss-+-cloud].mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Append conversation messages to a session\u0026#x27;s working memory. One call carries 1–500 messages. The write is asynchronous by default (async_mode true): the gateway validates and enqueues it, answering 202 with status \u0026quot;queued\u0026quot;. Pass async_mode: false to forward synchronously and receive the engine\u0026#x27;s 200 result instead. Distillation into long-term memory is always asynchronous — it runs on a session boundary, or when you call /api/v2/memory/flush.\">\u003cmeta data-mint-head name=\"application-name\" content=\"EverOS\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/evermind/9Y2uP5IsfgMDaKTY/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/evermind/9Y2uP5IsfgMDaKTY/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/evermind/9Y2uP5IsfgMDaKTY/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/evermind/9Y2uP5IsfgMDaKTY/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/evermind/9Y2uP5IsfgMDaKTY/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/evermind/9Y2uP5IsfgMDaKTY/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/evermind/9Y2uP5IsfgMDaKTY/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/evermind/9Y2uP5IsfgMDaKTY/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/evermind/9Y2uP5IsfgMDaKTY/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Add messages [OSS + Cloud] - EverOS\">\u003cmeta data-mint-head property=\"og:description\" content=\"Append conversation messages to a session\u0026#x27;s working memory. One call carries 1–500 messages. The write is asynchronous by default (async_mode true): the gateway validates and enqueues it, answering 202 with status \u0026quot;queued\u0026quot;. Pass async_mode: false to forward synchronously and receive the engine\u0026#x27;s 200 result instead. Distillation into long-term memory is always asynchronous — it runs on a session boundary, or when you call /api/v2/memory/flush.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"EverOS\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.evermind.ai/api-reference/memory/add-messages-[oss-+-cloud]\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://evermind.mintlify.app/_mintlify/api/og/v2?division=Memory\u0026amp;title=Add+messages+%5BOSS+%2B+Cloud%5D\u0026amp;description=Append+conversation+messages+to+a+session%27s+working+memory.+One+call+carries+1%E2%80%93500+messages.%0A%0AThe+write+is+asynchronous+by+default+%28%60async_mode%60+true%29%3A+the+gate\u0026amp;theme=542fb84329606931cb1a7e2a\u0026amp;signature=07c41bf8dc05a841ff9f0bf80e0fd41d744e32bd92a92bffada12ff1fea3df02\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Add messages [OSS + Cloud] - EverOS\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Append conversation messages to a session\u0026#x27;s working memory. One call carries 1–500 messages. The write is asynchronous by default (async_mode true): the gateway validates and enqueues it, answering 202 with status \u0026quot;queued\u0026quot;. Pass async_mode: false to forward synchronously and receive the engine\u0026#x27;s 200 result instead. Distillation into long-term memory is always asynchronous — it runs on a session boundary, or when you call /api/v2/memory/flush.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://evermind.mintlify.app/_mintlify/api/og/v2?division=Memory\u0026amp;title=Add+messages+%5BOSS+%2B+Cloud%5D\u0026amp;description=Append+conversation+messages+to+a+session%27s+working+memory.+One+call+carries+1%E2%80%93500+messages.%0A%0AThe+write+is+asynchronous+by+default+%28%60async_mode%60+true%29%3A+the+gate\u0026amp;theme=542fb84329606931cb1a7e2a\u0026amp;signature=07c41bf8dc05a841ff9f0bf80e0fd41d744e32bd92a92bffada12ff1fea3df02\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/evermind/9Y2uP5IsfgMDaKTY/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"EverOS\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#2DABC2\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.evermind.ai/api-reference/memory/add-messages-[oss-+-cloud]\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/memory/add-messages-%5Boss-%2B-cloud%5D.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.evermind.ai/#organization\",\"name\":\"EverOS\",\"url\":\"https://docs.evermind.ai\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/evermind/r7FUvGqFENzWPpQK/logo/dark.png?fit=max\u0026auto=format\u0026n=r7FUvGqFENzWPpQK\u0026q=85\u0026s=3c77717d85a2e6597b61a703fa9f18dc\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.evermind.ai#website\",\"name\":\"EverOS\",\"url\":\"https://docs.evermind.ai\",\"publisher\":{\"@id\":\"https://docs.evermind.ai/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.evermind.ai/api-reference/memory/add-messages-[oss-+-cloud]#webpage\",\"url\":\"https://docs.evermind.ai/api-reference/memory/add-messages-[oss-+-cloud]\",\"name\":\"Add messages [OSS + Cloud]\",\"description\":\"Append conversation messages to a session's working memory. One call carries 1–500 messages. The write is asynchronous by default (async_mode true): the gateway validates and enqueues it, answering 202 with status \\\"queued\\\". Pass async_mode: false to forward synchronously and receive the engine's 200 result instead. Distillation into long-term memory is always asynchronous — it runs on a session boundary, or when you call /api/v2/memory/flush.\",\"dateModified\":\"2026-10-26T03:27:45.707Z\",\"isPartOf\":{\"@id\":\"https://docs.evermind.ai#website\"},\"breadcrumb\":{\"@id\":\"https://docs.evermind.ai/api-reference/memory/add-messages-[oss-+-cloud]#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.evermind.ai/api-reference/memory/add-messages-[oss-+-cloud]#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"EverOS\",\"item\":\"https://docs.evermind.ai\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Add messages [OSS + Cloud]\",\"item\":\"https://docs.evermind.ai/api-reference/memory/add-messages-[oss-+-cloud]\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.evermind.ai/api-reference/memory/add-messages-[oss-+-cloud]#apireference\",\"headline\":\"Add messages [OSS + Cloud]\",\"name\":\"Add messages [OSS + Cloud]\",\"description\":\"Append conversation messages to a session's working memory. One call carries 1–500 messages. The write is asynchronous by default (async_mode true): the gateway validates and enqueues it, answering 202 with status \\\"queued\\\". Pass async_mode: false to forward synchronously and receive the engine's 200 result instead. Distillation into long-term memory is always asynchronous — it runs on a session boundary, or when you call /api/v2/memory/flush.\",\"url\":\"https://docs.evermind.ai/api-reference/memory/add-messages-[oss-+-cloud]\",\"mainEntityOfPage\":{\"@id\":\"https://docs.evermind.ai/api-reference/memory/add-messages-[oss-+-cloud]#webpage\"},\"dateModified\":\"2026-10-26T03:27:45.707Z\",\"publisher\":{\"@id\":\"https://docs.evermind.ai/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.evermind.ai#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"EverOS\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"EverOS","nav":{"global":{},"tabs":[{"tab":"Welcome","pages":[{"title":"Welcome","href":"/introduction"}]},{"tab":"EverOS Cloud","pages":[{"title":"EverOS Cloud","href":"/cloud/overview"}]},{"tab":"Open Source","pages":[{"title":"Open Source","href":"/open-source/overview"}]},{"tab":"Cookbook","pages":[{"title":"Cookbook","href":"/cookbook/quickstart"}]},{"tab":"API Reference","groups":[{"group":"Getting Started","icon":"rocket","pages":[{"title":"API Overview","icon":"circle-info","href":"/api-reference/introduction"}]},{"group":"Migration","icon":"arrow-up-right-dots","pages":[{"title":"v1 API Retirement","icon":"calendar-xmark","href":"/api-reference/v1-sunset"},{"title":"Upgrade Python SDK to 1.x","description":"Migrate the everos-cloud Python SDK from the 0.4.x client to 1.x (the v2 Memory API).","icon":"arrow-up-right-dots","href":"/api-reference/sdk-migration-1x"}]},{"group":"Memory","icon":"database","pages":[{"title":"Add messages [OSS + Cloud]","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/memory/add","href":"/api-reference/memory/add-messages-[oss-+-cloud]"},{"title":"Force memory extraction [OSS + Cloud]","description":"Force extraction for a session instead of waiting for a boundary.\n\n- `\"extracted\"` — memories were distilled.\n- `\"no_extraction\"` — there was nothing to extract.\n\nA default (async) add that is still queued yields `\"no_extraction\"`, so either write with `async_mode: false` or poll the add's task before flushing.","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/memory/flush","href":"/api-reference/memory/force-memory-extraction-[oss-+-cloud]"},{"title":"Get memories [OSS + Cloud]","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/memory/get","href":"/api-reference/memory/get-memories-[oss-+-cloud]"},{"title":"Search memories [OSS + Cloud]","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/memory/search","href":"/api-reference/memory/search-memories-[oss-+-cloud]"},{"title":"Context Retrieval [Cloud-only]","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/memory/context","href":"/api-reference/memory/context-retrieval-[cloud-only]"},{"title":"Edit profile items [Cloud-only]","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/memory/edit","href":"/api-reference/memory/edit-profile-items-[cloud-only]"},{"title":"Edit one memory record [Cloud-only]","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/memory/update","href":"/api-reference/memory/edit-one-memory-record-[cloud-only]"},{"title":"Delete memories [Cloud-only]","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/memory/delete","href":"/api-reference/memory/delete-memories-[cloud-only]"},{"title":"Soft-delete memory records by id [Cloud-only]","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/memory/delete_by_ids","href":"/api-reference/memory/soft-delete-memory-records-by-id-[cloud-only]"},{"title":"Submit feedback about one memory [Cloud-only]","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/memory/feedback","href":"/api-reference/memory/submit-feedback-about-one-memory-[cloud-only]"},{"group":"Tags","icon":"tags","pages":[{"title":"Bind tags to memories [Cloud]","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/memory/tag/bind","href":"/api-reference/memory/bind-tags-to-memories-[cloud]"},{"title":"Unbind tags from memories [Cloud]","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/memory/tag/unbind","href":"/api-reference/memory/unbind-tags-from-memories-[cloud]"},{"title":"Replace tags on memories [Cloud]","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/memory/tag/replace","href":"/api-reference/memory/replace-tags-on-memories-[cloud]"}]}]},{"group":"Knowledge Bases","icon":"book","pages":[{"title":"Create a knowledge base","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/knowledge_bases","href":"/api-reference/knowledge/create-a-knowledge-base"},{"title":"List knowledge bases","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /api/v2/knowledge_bases","href":"/api-reference/knowledge/list-knowledge-bases"},{"title":"Get a knowledge base","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /api/v2/knowledge_bases/{kb_id}","href":"/api-reference/knowledge/get-a-knowledge-base"},{"title":"Update a knowledge base","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /api/v2/knowledge_bases/{kb_id}","href":"/api-reference/knowledge/update-a-knowledge-base"},{"title":"Delete a knowledge base","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /api/v2/knowledge_bases/{kb_id}","href":"/api-reference/knowledge/delete-a-knowledge-base"},{"title":"Search a knowledge base","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/knowledge_bases/{kb_id}/search","href":"/api-reference/knowledge/search-a-knowledge-base"},{"group":"Documents","icon":"file-lines","pages":[{"title":"Upload a document","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/knowledge_bases/{kb_id}/documents","href":"/api-reference/knowledge/upload-a-document"},{"title":"List Documents","deprecated":null,"version":null,"openapi":"/api-reference/openapi-oss-v1.json get /api/v1/knowledge/documents","href":"/api-reference/knowledge/list-documents"},{"title":"Get a document","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /api/v2/knowledge_bases/{kb_id}/documents/{doc_id}","href":"/api-reference/knowledge/get-a-document"},{"title":"Replace a document","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json put /api/v2/knowledge_bases/{kb_id}/documents/{doc_id}","href":"/api-reference/knowledge/replace-a-document"},{"title":"Update a document","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /api/v2/knowledge_bases/{kb_id}/documents/{doc_id}","href":"/api-reference/knowledge/update-a-document"},{"title":"Delete a document","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /api/v2/knowledge_bases/{kb_id}/documents/{doc_id}","href":"/api-reference/knowledge/delete-a-document"}]},{"group":"Categories","icon":"folder-tree","pages":[{"title":"Create a category","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/knowledge_bases/{kb_id}/categories","href":"/api-reference/knowledge/create-a-category"},{"title":"List Categories","deprecated":null,"version":null,"openapi":"/api-reference/openapi-oss-v1.json get /api/v1/knowledge/categories","href":"/api-reference/knowledge/list-categories"},{"title":"Update a category","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json patch /api/v2/knowledge_bases/{kb_id}/categories/{category_id}","href":"/api-reference/knowledge/update-a-category"},{"title":"Delete a category","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json delete /api/v2/knowledge_bases/{kb_id}/categories/{category_id}","href":"/api-reference/knowledge/delete-a-category"}]},{"group":"Topics","icon":"sitemap","pages":[{"title":"List a document's topics","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /api/v2/knowledge_bases/{kb_id}/documents/{doc_id}/topics","href":"/api-reference/knowledge/list-a-documents-topics"},{"title":"Get a topic","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /api/v2/knowledge_bases/{kb_id}/documents/{doc_id}/topics/{topic_id}","href":"/api-reference/knowledge/get-a-topic"},{"title":"List topics by tag","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /api/v2/knowledge_bases/{kb_id}/topics","href":"/api-reference/knowledge/list-topics-by-tag"}]},{"group":"Semantic Tags","icon":"tag","pages":[{"title":"Count tag usage","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/knowledge_bases/{kb_id}/tags","href":"/api-reference/knowledge/count-tag-usage"},{"title":"Replace a topic's tags","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/knowledge_bases/{kb_id}/documents/{doc_id}/topics/{topic_id}/tag/replace","href":"/api-reference/knowledge/replace-a-topics-tags"}]}]},{"group":"Async Tasks","icon":"list-check","pages":[{"title":"List tasks","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /api/v2/tasks","href":"/api-reference/tasks/list-tasks"},{"title":"Count tasks by status","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /api/v2/tasks/stats","href":"/api-reference/tasks/count-tasks-by-status"},{"title":"Get a task","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json get /api/v2/tasks/{task_id}","href":"/api-reference/tasks/get-a-task"}]},{"group":"Storage","icon":"cloud-arrow-up","pages":[{"title":"Get multimodal upload URLs","deprecated":null,"version":null,"openapi":"/api-reference/openapi.json post /api/v2/object/sign","href":"/api-reference/storage/get-multimodal-upload-urls"}]}]},{"tab":"API Reference (Cloud v1 · legacy)","pages":[{"title":"API Reference (Cloud v1 · legacy)","href":"/api-reference/legacy-cloud-v1"}]},{"tab":"API Reference (OSS v1 · legacy)","pages":[{"title":"API Reference (OSS v1 · legacy)","href":"/api-reference/legacy-oss-v1"}]},{"tab":"Release Notes","pages":[{"title":"Release Notes","href":"/changelog/release-notes"}]}]},"title":"Add messages [OSS + Cloud] - EverOS","buildId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","deploymentId":"dpl_DFJrtvUi8HS5F9nkooKuDJsuD5BM","dynamics":["10e4515597","c2aa737661","2b790eda92","b0f84f53ff","a9bb46feb3"],"chunks":["BannerMarkdown-BVNUlwBc.js","dist-aeztFa9U.js","lib--scc4DXi.js","lib-B8HbPgcC.js","clsx-rL8ZCCw4.js","html-void-elements-mCSPHezU.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","OpenApiReferenceProvider-rfhihCWU.js","utils-BmH1XFxk.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-BcNsxPKB.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-BAES3tkd.js","snippetPresets-DCMQBKLP.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","ApiExamples-D6l_bzE9.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-BOktbnNh.js","shallow-BCs8SgM7.js","getApiPlaygroundDisplay-DEmW5bJB.js","CodeSnippet-CpZOpB9C.js","CodeSnippets-BOBDqibl.js","Page-D5fEM6aW.js","getPastedJson-DH2JBvmr.js","icon-BBJH-kKh.js","MethodPill-D2Sd5NLC.js","DuplicateIcon-CGgfL2qN.js","createIcon-BKudBBzi.js","DynamicMarkdown-85clUA0i.js","SectionHeading-D0JiMgDx.js","axios-vUo_bRtp.js","Markdown-Cfiy0xZO.js","AssistantPageLink-BywkCr5C.js"]}